package tmall.common.service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.google.common.collect.Maps;
import tmall.common.dto.PageDTO;
import tmall.common.mapper.BaseMapper;
import tmall.domain.entity.Category;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @author zhangservlet
 * @date 2020/11/30
 */
public abstract class BaseService<T> {

    protected abstract BaseMapper<T> getMapper();

    public int insert(T entity){
        return this.getMapper().insert(entity);
    }

    public int update(T entity){
        return this.getMapper().update(entity);
    }

    public List<T> findAllBy(Map params){
        return this.getMapper().findAllBy(params);
    }

    public T findById(Serializable id){
        return this.getMapper().findById(id);
    }

    public T findBy(Map<String, Object> params){
        return this.getMapper().findBy(params);
    }

    public int delete(Serializable id){
        return this.getMapper().delete(id);
    }

    /**
     * 分页查询
     * @param pageNum
     * @param pageSize
     * @param keyWord
     * @return
     */
    public PageDTO list(Integer pageNum, Integer pageSize, String keyWord) {
        Page<Category> page = PageHelper.startPage(pageNum,pageSize);
        Map map = Maps.newHashMap();
        map.put("keyWord", keyWord);
        this.getMapper().findAllBy(map);
        return new PageDTO(page);
    }
}
